package com.haixiaoke.saas.repository.service.impl;

import com.haixiaoke.saas.repository.mapper.ContractTemplateMapper;
import com.haixiaoke.saas.repository.pojo.ContractTemplate;
import com.haixiaoke.saas.repository.service.IContractTemplateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;

/**
 * 合同模板管理Service业务层处理
 *
 * @author zhiping
 * @date 2023-04-13
 */
@Service
public class ContractTemplateServiceImpl implements IContractTemplateService {

    private final Integer TEMPLATE_ENABLE = 1;
    private final Integer TEMPLATE_DISABLE = 2;


    @Autowired
    private ContractTemplateMapper contractTemplateMapper;

    /**
     * 查询合同模板管理
     *
     * @param templateId 合同模板管理主键
     * @return 合同模板管理
     */
    @Override
    public ContractTemplate selectContractTemplateByTemplateId(Long templateId) {
        return contractTemplateMapper.selectContractTemplateByTemplateId(templateId);
    }

    /**
     * 查询合同模板管理列表
     *
     * @param contractTemplate 合同模板管理
     * @return 合同模板管理
     */
    @Override
    public List<ContractTemplate> selectContractTemplateList(ContractTemplate contractTemplate) {
        return contractTemplateMapper.selectContractTemplateList(contractTemplate);
    }

    /**
     * 新增合同模板管理
     *
     * @param contractTemplate 合同模板管理
     * @return 结果
     */
    @Override
    public int insertContractTemplate(ContractTemplate contractTemplate) {
        contractTemplate.setCreateTime(new Date());
        return contractTemplateMapper.insertContractTemplate(contractTemplate);
    }

    /**
     * 修改合同模板管理
     *
     * @param contractTemplate 合同模板管理
     * @return 结果
     */
    @Override
    public int updateContractTemplate(ContractTemplate contractTemplate) {
        contractTemplate.setUpdateTime(new Date());
        return contractTemplateMapper.updateContractTemplate(contractTemplate);
    }

    /**
     * 批量删除合同模板管理
     *
     * @param templateIds 需要删除的合同模板管理主键
     * @return 结果
     */
    @Override
    public int deleteContractTemplateByTemplateIds(Long[] templateIds) {
        return contractTemplateMapper.deleteContractTemplateByTemplateIds(templateIds);
    }

    /**
     * 删除合同模板管理信息
     *
     * @param templateId 合同模板管理主键
     * @return 结果
     */
    @Override
    public int deleteContractTemplateByTemplateId(Long templateId) {
        return contractTemplateMapper.deleteContractTemplateByTemplateId(templateId);
    }

    @Override
    public String selectContractTemplateByOrgId(Long orgId) {
        return contractTemplateMapper.selectContractTemplateByOrgId(orgId);
    }

    @Override
    public int enableTemplate(Long orgId, Long templateId) {
        // 先禁用该企业用户的所有模板
        int disable = contractTemplateMapper.disabledAllTemplate(orgId);
        // 再启用 templateId
        int enable = contractTemplateMapper.updateUsageStatus(orgId, templateId, TEMPLATE_ENABLE);
        return enable;
    }

    @Override
    public int disableTemplate(Long orgId, Long templateId) {
        return contractTemplateMapper.updateUsageStatus(orgId, templateId, TEMPLATE_DISABLE);
    }




}
